約 2,913,238 件
https://w.atwiki.jp/tracking_quizshow/pages/34.html
問題 問題画像 問題文 例をヒントに暗号を解読してください。例:HA・JR=8SIXGM・MS=? 回答 5THREE 解説 HA・JR = 8SIX = 8(HACHI) August・June 6(ROKU) GM・MS = 5(GO) May・March 3(SAN) = 5THREE 補足 Big/bq044と同じ問題です
https://w.atwiki.jp/tracking_quizshow/pages/59.html
問題 問題画像 問題文 例をヒントに暗号を解読してください。例:HA・JR=8SIXGM・MS=? 回答 5THREE 解説 HA・JR = 8SIX = 8(HACHI) August・June 6(ROKU) GM・MS = 5(GO) May・March 3(SAN) = 5THREE 補足 Big/bq019と同じ問題です
https://w.atwiki.jp/sampleisbest/pages/511.html
開発環境 Microsoft Visual Studio Community 2017 実行環境 Microsoft Windows 10 Home (64-bit) プロジェクトの種類 Visual C++ / 空のプロジェクト プロジェクト名 waveout waveout.cpp /* プロジェクト・プロパティ 全般 Unicode 文字セット WaveOnMessage系は無理に処理する必要はない。 */ #pragma comment(lib, "winmm") #include Windows.h #include wchar.h #include math.h #include "resource.h" #define SAMPLE_RATE 48000 // 関数プロトタイプ宣言 void Trace(PCWSTR format, ...); INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void CALLBACK waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2); void Play(HWND hDlg); void Stop(HWND hDlg); LPSTR GenerateWaveform(); // グローバル変数 HWAVEOUT hwo = NULL; WAVEHDR wh; LPSTR lpData = NULL; DWORD dwBufferLength; int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, MainDlgProc); return 0; } void Trace(PCWSTR format, ...) { va_list arg_ptr; WCHAR buffer[256]; va_start(arg_ptr, format); int size = _vsnwprintf_s(buffer, _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); } INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR nRet = TRUE; switch (uMsg) { case MM_WOM_OPEN Trace(L"MM_WOM_OPEN \n"); break; case MM_WOM_CLOSE Trace(L"MM_WOM_CLOSE \n"); break; case MM_WOM_DONE Trace(L"MM_WOM_DONE \n"); //Stop(hDlg); break; case WM_COMMAND switch (LOWORD(wParam)) { case IDOK Play(hDlg); break; case IDCANCEL Stop(hDlg); break; } break; case WM_INITDIALOG break; case WM_CLOSE Stop(hDlg); EndDialog(hDlg, 0); break; default nRet = FALSE; } return nRet; } void CALLBACK waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2) { switch (uMsg) { case WOM_OPEN Trace(L"WOM_OPEN "); break; case WOM_CLOSE Trace(L"WOM_CLOSE "); break; case WOM_DONE Trace(L"WOM_DONE "); break; } Trace(L" %x\n", dwInstance); } void Play(HWND hDlg) { lpData = GenerateWaveform(); // UINT mmr; WAVEFORMATEX wfx; wfx.wFormatTag = WAVE_FORMAT_PCM; wfx.nChannels = 1; wfx.nSamplesPerSec = SAMPLE_RATE; wfx.nAvgBytesPerSec = SAMPLE_RATE; wfx.nBlockAlign = 1; wfx.wBitsPerSample = 8; wfx.cbSize = 0; //mmr = waveOutOpen( hwo, WAVE_MAPPER, wfx, (DWORD_PTR)hDlg, NULL, CALLBACK_WINDOW); mmr = waveOutOpen( hwo, WAVE_MAPPER, wfx, (DWORD_PTR)waveOutProc, 0xcafe, CALLBACK_FUNCTION); Trace(L"waveOutOpen %u\n", mmr); wh.lpData = (LPSTR)lpData; wh.dwBufferLength = dwBufferLength; wh.dwFlags = 0; mmr = waveOutPrepareHeader(hwo, wh, sizeof wh); Trace(L"waveOutPrepareHeader %u\n", mmr); mmr = waveOutWrite(hwo, wh, sizeof wh); Trace(L"waveOutWrite %u\n", mmr); EnableWindow(GetDlgItem(hDlg, IDOK), FALSE); } void Stop(HWND hDlg) { Trace(L"Stop()\n"); if (hwo) { UINT mmr; mmr = waveOutReset(hwo); Trace(L"waveOutReset %u\n", mmr); mmr = waveOutUnprepareHeader(hwo, wh, sizeof wh); Trace(L"waveOutUnprepareHeader %u\n", mmr); mmr = waveOutClose(hwo); Trace(L"waveOutClose %u\n", mmr); hwo = NULL; } if (lpData) { free(lpData); lpData = NULL; } EnableWindow(GetDlgItem(hDlg, IDOK), TRUE); } LPSTR GenerateWaveform() { const int note[] = { 0, 2, 4, 5, 7, 9, 11, 12 }; dwBufferLength = SAMPLE_RATE * 4; PBYTE data = (PBYTE)malloc(dwBufferLength); memset(data, 0x80, dwBufferLength); int pos = 0; for (int i = 0; i 8; i++) { int freq = (int)(440 * pow(2, (note[i] - 9) / 12.0)); int gate = SAMPLE_RATE / 2; double s = 0; for (int j = 0; j gate; j++) { s += freq; if (s = SAMPLE_RATE) s -= SAMPLE_RATE; double t = s / SAMPLE_RATE; data[pos + j] += (t 0.5 ? 1 -1) * 8; } pos += gate; } return (LPSTR)data; } resource.h #define IDD_MAIN100 #define IDC_STATIC-1 waveout.rc // resource script #include windows.h #include "resource.h" IDD_MAIN DIALOGEX 100, 100, 320, 200 STYLE WS_POPUPWINDOW | WS_MINIMIZEBOX EXSTYLE WS_EX_APPWINDOW CAPTION L"waveout" FONT 9, L"MS Pゴシック" BEGIN DEFPUSHBUTTONL"OK",IDOK,212,176,48,16 PUSHBUTTONL"Cancel",IDCANCEL,264,176,48,16 END
https://w.atwiki.jp/sampleisbest/pages/295.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 WaveTestLR アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト WaveTestLR.cpp #pragma comment(lib, "winmm") #define _USE_MATH_DEFINES #include Windows.h #include WindowsX.h #include wchar.h #include math.h #include "resource.h" #define SAMPLING_RATE44100 // 外部変数 HWAVEOUT hwo; WAVEHDR wh; BYTE waveformData[SAMPLING_RATE * 2]; // 関数プロトタイプ宣言 void Trace(LPCTSTR format, ...); INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnOK(HWND hDlg); void OnWomOpen(); void OnWomDone(HWND hDlg); void GenerateWaveform(HWND hDlg); //============================================================================== int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DlgProc); return 0; } void Trace(LPCTSTR format, ...) { va_list arg_ptr; va_start(arg_ptr, format); TCHAR buffer[256]; int size = _vsnwprintf_s(buffer, _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); if (size 0) { OutputDebugString(L"...\n"); } } INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR res = TRUE;// メッセージを処理した switch (uMsg) { case MM_WOM_OPEN OnWomOpen(); break; case MM_WOM_DONE OnWomDone(hDlg); break; case WM_COMMAND switch (LOWORD(wParam)) { case IDC_MODE GenerateWaveform(hDlg); break; case IDOK OnOK(hDlg); break; case IDCANCEL OnWomDone(hDlg); break; } break; case WM_INITDIALOG Button_SetCheck(GetDlgItem(hDlg, IDC_MODE), BST_CHECKED); GenerateWaveform(hDlg); break; case WM_CLOSE EndDialog(hDlg, 0); break; default res = FALSE;// メッセージを処理しなかった } return res; } void OnOK(HWND hDlg) { WAVEFORMATEX wfx; wfx.wFormatTag= WAVE_FORMAT_PCM; wfx.wBitsPerSample= 8; wfx.nChannels= 2; wfx.nSamplesPerSec= SAMPLING_RATE; wfx.nBlockAlign= (wfx.wBitsPerSample / 8) * wfx.nChannels; wfx.nAvgBytesPerSec= wfx.nSamplesPerSec * wfx.nBlockAlign; wfx.cbSize= 0; MMRESULT mmr = waveOutOpen( hwo, WAVE_MAPPER, wfx, (DWORD_PTR)hDlg, 0, CALLBACK_WINDOW); if (mmr != MMSYSERR_NOERROR) { Trace(L"waveOutOpen\n"); return; } EnableWindow(GetDlgItem(hDlg, IDOK), FALSE); } void OnWomOpen() { wh.lpData= (LPSTR)waveformData; wh.dwBufferLength= sizeof waveformData; wh.dwBytesRecorded= 0; wh.dwUser= 0; wh.dwFlags= 0; wh.dwLoops= 0; wh.lpNext= NULL; wh.reserved= 0; MMRESULT mmr = waveOutPrepareHeader(hwo, wh, sizeof wh); if (mmr != MMSYSERR_NOERROR) { Trace(L"waveOutPrepareHeader\n"); return; } wh.dwFlags|= WHDR_BEGINLOOP | WHDR_ENDLOOP; wh.dwLoops= 60; mmr = waveOutWrite(hwo, wh, sizeof wh); if (mmr != MMSYSERR_NOERROR) { Trace(L"waveOutWrite\n"); return; } } void OnWomDone(HWND hDlg) { Trace(L"OnWomDone\n"); waveOutReset(hwo); waveOutUnprepareHeader(hwo, wh, sizeof wh); waveOutClose(hwo); EnableWindow(GetDlgItem(hDlg, IDOK), TRUE); } void GenerateWaveform(HWND hDlg) { int m = Button_GetCheck(GetDlgItem(hDlg, IDC_MODE)); int h = SAMPLING_RATE / 2; for (int i = 0; i SAMPLING_RATE; i++) { double t, y; // 低音 t = fmod(i * 441.0 / SAMPLING_RATE, 1.0); y = sin(2 * M_PI * t); if (h = i) y = 0; BYTE low = BYTE(128 + 16 * y); // 高音 t = fmod(i * 882.0 / SAMPLING_RATE, 1.0); y = sin(2 * M_PI * t); if (i h) y = 0; BYTE high = BYTE(128 + 4 * y); // Left waveformData[i * 2 + 0] = (m == BST_CHECKED) ? low high; // Right waveformData[i * 2 + 1] = (m == BST_CHECKED) ? high low; } } resource.h #define IDD_DIALOG100 #define IDC_MODE1000 WaveTestLR.rc // resource script #include Windows.h #include "resource.h" IDD_DIALOG DIALOGEX 100, 100, 115, 45 STYLE WS_POPUPWINDOW | WS_MINIMIZEBOX EXSTYLE WS_EX_APPWINDOW CAPTION "WaveTestLR" FONT 9, "MS Pゴシック" BEGIN AUTOCHECKBOX"L 低音 R 高音",IDC_MODE,5,5,100,15 PUSHBUTTON"Play( P)",IDOK,5,25,50,15 PUSHBUTTON"Stop( S)",IDCANCEL,60,25,50,15 END
https://w.atwiki.jp/sampleisbest/pages/103.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 TrackTest アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode TrackTest.c #include Windows.h #include CommCtrl.h #include "resource.h" INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DialogProc); return 0; } INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { static HWND hProg, hTrack; INT_PTR retval = TRUE; int iPos; switch (uMsg) { case WM_INITDIALOG hProg = GetDlgItem(hDlg, IDC_PROGRESS1); hTrack = GetDlgItem(hDlg, IDC_TRACK1); SendMessage(hProg, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); SendMessage(hTrack, TBM_SETRANGE, 0, MAKELPARAM(0, 100)); break; case WM_HSCROLL iPos = SendMessage(hTrack, TBM_GETPOS, 0, 0); SendMessage(hProg, PBM_SETPOS, iPos, 0); break; case WM_CLOSE EndDialog(hDlg, IDOK); break; default retval = FALSE; } return retval; } resource.h #define IDD_DIALOG100 #define IDC_PROGRESS11000 #define IDC_TRACK11001 TrackTest.rc #include windows.h #include "resource.h" IDD_DIALOG DIALOGEX 0, 0, 320, 200 STYLE WS_POPUPWINDOW | WS_MINIMIZEBOX EXSTYLE WS_EX_APPWINDOW CAPTION "TrackTest" FONT 9, "MS Pゴシック" BEGIN CONTROL"Progress1",IDC_PROGRESS1,"msctls_progress32", WS_BORDER,20,8,284,16 CONTROL"Track1",IDC_TRACK1,"msctls_trackbar32", TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,20,36,284,16 END
https://w.atwiki.jp/pokecharaneta/pages/18932.html
Big Nose the Caveman Big Nose the Cavemanプレイヤー ボス 動画 Big Nose Freaks Out動画 コメント タイプ1:いわ Camericaが開発、コードマスターズが1991年に発売されたアクションゲーム。 続編の「Big Nose Freaks Out」のタイトルで1992年に発売された。 Big Nose the Caveman プレイヤー ガラガラ:名称不明(主人公) ボス トリデプス:名称不明(トリケラトプス) 技:とっしん ガチゴラス:名称不明(ティラノサウルス) ドラピオン:名称不明(サソリ) パオジアン:名称不明(サーベルタイガー) 技:ふいうち(飛び掛かる) 動画 Big Nose Freaks Out 動画 コメント 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/sampleisbest/pages/159.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 StaticDraw アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode 各種ウィンドウを試してみた。 スタティックコントロールに描画するだけならオーナードローが適しているだろう。 新規ウィンドウ スタティックコントロール(サブクラス化) スタティックコントロール(オーナードロー) StaticDraw.cpp // Unicode文字セット #include Windows.h #include stdio.h #include "resource.h" #define WIDTH(rect) ((rect).right - (rect).left) #define HEIGHT(rect) ((rect).bottom - (rect).top) #define CLASS_NAME TEXT("StaticDraw") // 関数プロトタイプ宣言 void Trace(LPCTSTR format, ...); INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnInitDialog(HWND hDlg); HWND CreateWnd(HINSTANCE hInstance, HWND hDlg); LRESULT CALLBACK NewWndWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK SubClsWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnPaint(HWND hWnd, int nCtrlID); void OnDrawItem(WPARAM wParam, LPARAM lParam); // 外部変数構造体 static struct { HINSTANCE hInstance; HFONT hFont; } g; static WNDPROC PrevWndFunc; //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) { g.hInstance = hInstance; DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, MainDlgProc); return 0; } //------------------------------------------------------------------------------ void Trace(LPCTSTR format, ...) { va_list arg_ptr; TCHAR buffer[256]; int size; va_start(arg_ptr, format); size = _vsnwprintf_s(buffer, _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); if (size 0) { OutputDebugString(L"...\n"); } } //------------------------------------------------------------------------------ INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR nRet = TRUE;// メッセージを処理した switch (uMsg) { case WM_DRAWITEM OnDrawItem(wParam, lParam); break; case WM_COMMAND switch (LOWORD(wParam)) { case IDCANCEL EndDialog(hDlg, IDCANCEL); break; } break; case WM_SIZE { POINTS pts = MAKEPOINTS(lParam); Trace(L"WM_SIZE(%u, %d, %d)\n", wParam, pts.x, pts.y); } break; case WM_INITDIALOG OnInitDialog(hDlg); nRet = TRUE;// SetFocusでフォーカスを設定した場合はFALSE break; case WM_CLOSE EndDialog(hDlg, 0); break; case WM_DESTROY Trace(L"WM_DESTROY\n"); DeleteObject(g.hFont); break; default nRet = FALSE;// メッセージを処理しなかった } return nRet; } //------------------------------------------------------------------------------ void OnInitDialog(HWND hDlg) { HWND hWnd; // 縦書きフォントの作成 LOGFONT lf; ZeroMemory( lf, sizeof lf); lf.lfHeight= -20; lf.lfEscapement= 2700; lf.lfOrientation= 2700; wcscpy_s(lf.lfFaceName, L"@MS Pゴシック"); g.hFont = CreateFontIndirect( lf); // ダイアログをクライアント領域に合わせる RECT rcWindow; RECT rcClient; GetWindowRect(hDlg, rcWindow); GetClientRect(hDlg, rcClient); SetWindowPos(hDlg, NULL, 0, 0, 800 + (WIDTH(rcWindow) - WIDTH(rcClient)), 400 + (HEIGHT(rcWindow) - HEIGHT(rcClient)), SWP_NOZORDER | SWP_NOMOVE); // 新規ウィンドウ hWnd = CreateWnd(g.hInstance, hDlg); // サブクラス化 hWnd = CreateWindow( L"static", NULL, WS_CHILD | WS_VISIBLE, 300, 50, 200, 300, hDlg, (HMENU)IDC_SUBCLS, g.hInstance, NULL); PrevWndFunc = (WNDPROC)GetWindowLong(hWnd, GWL_WNDPROC); SetWindowLong(hWnd, GWL_WNDPROC, (LONG)SubClsWndProc); // オーナードロー hWnd = CreateWindow( L"static", NULL, WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 550, 50, 200, 300, hDlg, (HMENU)IDC_OWNDRAW, g.hInstance, NULL); } //============================================================================== HWND CreateWnd(HINSTANCE hInstance, HWND hDlg) { // ウィンドウクラスの登録 WNDCLASSEX wcx; ZeroMemory( wcx, sizeof wcx); wcx.cbSize= sizeof wcx; //wcx.style= CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc= NewWndWndProc; wcx.hInstance= hInstance; wcx.hCursor= LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); wcx.hbrBackground= (HBRUSH)(COLOR_WINDOW + 1); wcx.lpszClassName= CLASS_NAME; if (RegisterClassEx( wcx) == 0) { return NULL; } // ウィンドウの作成 HWND hWnd = CreateWindow( CLASS_NAME, NULL, WS_CHILD | WS_VISIBLE, 50, 50, 200, 300, hDlg, (HMENU)IDC_NEWWND, hInstance, NULL); return hWnd; } //------------------------------------------------------------------------------ LRESULT CALLBACK NewWndWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_PAINT OnPaint(hWnd, IDC_NEWWND); return 0; } return DefWindowProc(hWnd, uMsg, wParam, lParam); } //------------------------------------------------------------------------------ LRESULT CALLBACK SubClsWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_PAINT OnPaint(hWnd, IDC_SUBCLS); return 0; } return CallWindowProc(PrevWndFunc, hWnd, uMsg, wParam, lParam); } //------------------------------------------------------------------------------ void OnPaint(HWND hWnd, int nCtrlID) { LPCTSTR pszStr; PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, ps); switch (nCtrlID) { case IDC_NEWWND pszStr = L"新規ウィンドウ"; break; case IDC_SUBCLS pszStr = L"サブクラス化"; FillRect(hdc, ps.rcPaint, GetSysColorBrush(COLOR_WINDOW)); break; default goto Exit; } Trace(L"OnPaint(%s)\n", pszStr); HGDIOBJ hFontOld = SelectObject(hdc, g.hFont); TextOut(hdc, 100, 100, pszStr, wcslen(pszStr)); SelectObject(hdc, hFontOld); Exit EndPaint(hWnd, ps); } //------------------------------------------------------------------------------ void OnDrawItem(WPARAM wParam, LPARAM lParam) { static LPCTSTR pszStr = L"オーナードロー"; LPDRAWITEMSTRUCT pdi = (LPDRAWITEMSTRUCT)lParam; Trace(L"OnDrawItem(%u)\n", wParam); HDC hdc = pdi- hDC; SetBkMode(hdc, TRANSPARENT);// 背景透過モード // 背景塗り潰し RECT rc; GetClientRect(pdi- hwndItem, rc); FillRect(hdc, rc, GetSysColorBrush(COLOR_WINDOW)); HGDIOBJ hFontOld = SelectObject(hdc, g.hFont); TextOut(hdc, 100, 100, pszStr, wcslen(pszStr)); SelectObject(hdc, hFontOld); } resource.h #define IDD_MAIN100 #define IDC_NEWWND1000// 新規ウィンドウ #define IDC_SUBCLS1001// サブクラス化 #define IDC_OWNDRAW1002// オーナードロー StaticDraw.rc // resource script #include windows.h #include "resource.h" IDD_MAIN DIALOGEX 100, 100, 320, 200 STYLE WS_POPUPWINDOW | WS_MINIMIZEBOX EXSTYLE WS_EX_APPWINDOW CAPTION "StaticDraw" FONT 9, "MS Pゴシック" BEGIN END
https://w.atwiki.jp/sampleisbest/pages/518.html
開発環境 Microsoft Visual Studio Community 2017 実行環境 Microsoft Windows 10 Home (64-bit) プロジェクトの種類 Visual C++ / 空のプロジェクト プロジェクト名 waveloop waveloop.cpp // プロジェクトのプロパティ // Unicode文字セット #pragma comment(lib, "winmm") #include Windows.h #include wchar.h #include "Resource.h" #define SAMPLE_RATE 44100 #define BUF_LEN 22050 // 関数プロトタイプ宣言 void Trace(LPCWSTR format, ...); INT_PTR CALLBACK MainDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); void Play(HWND hDlg); void Stop(HWND hDlg); void GenerateWaveForm(); // グローバル変数 HWAVEOUT hwo = NULL; WAVEHDR wh; BYTE waveform[BUF_LEN]; int phase; int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAINDLG), NULL, MainDlg); return 0; } void Trace(LPCWSTR format, ...) { va_list arg_ptr; WCHAR buffer[256]; va_start(arg_ptr, format); int size = _vsnwprintf_s(buffer, _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); } INT_PTR CALLBACK MainDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { INT_PTR ret = TRUE;// メッセージを処理した switch (message) { case MM_WOM_DONE GenerateWaveForm(); break; case MM_WOM_OPEN Trace(L"MM_WOM_OPEN \n"); break; case MM_WOM_CLOSE Trace(L"MM_WOM_CLOSE \n"); break; case WM_COMMAND switch (LOWORD(wParam)) { case IDC_PLAY Play(hDlg); break; case IDC_STOP Stop(hDlg); break; case IDCANCEL EndDialog(hDlg, IDCANCEL); break; } break; case WM_INITDIALOG ret = TRUE;// SetFocusでフォーカスを設定した場合はFALSE break; case WM_CLOSE Stop(hDlg); ret = FALSE; break; default ret = FALSE;// メッセージを処理しなかった } return ret; } void Play(HWND hDlg) { MMRESULT mmr; WAVEFORMATEX wfx; wfx.wFormatTag = WAVE_FORMAT_PCM; wfx.nChannels = 1; wfx.nSamplesPerSec = SAMPLE_RATE; wfx.nAvgBytesPerSec = SAMPLE_RATE; wfx.nBlockAlign = 1; wfx.wBitsPerSample = 8; wfx.cbSize = 0; mmr = waveOutOpen( hwo, WAVE_MAPPER, wfx, (DWORD_PTR)hDlg, NULL, CALLBACK_WINDOW); Trace(L"waveOutOpen %u\n", mmr); wh.lpData = (LPSTR)waveform; wh.dwBufferLength = BUF_LEN; wh.dwFlags = 0; mmr = waveOutPrepareHeader(hwo, wh, sizeof wh); Trace(L"waveOutPrepareHeader %u\n", mmr); phase = 0; GenerateWaveForm(); EnableWindow(GetDlgItem(hDlg, IDC_PLAY), FALSE); } void Stop(HWND hDlg) { Trace(L"Stop()\n"); if (hwo) { MMRESULT mmr; mmr = waveOutReset(hwo); Trace(L"waveOutReset %u\n", mmr); mmr = waveOutUnprepareHeader(hwo, wh, sizeof wh); Trace(L"waveOutUnprepareHeader %u\n", mmr); mmr = waveOutClose(hwo); Trace(L"waveOutClose %u\n", mmr); hwo = NULL; } EnableWindow(GetDlgItem(hDlg, IDC_PLAY), TRUE); } void GenerateWaveForm() { for (int i = 0; i BUF_LEN; i++) { phase += 440; if (SAMPLE_RATE = phase) phase -= SAMPLE_RATE; double t = phase / (double)SAMPLE_RATE; waveform[i] = 128 + (t 0.5 ? 1 -1) * 10; } waveOutWrite(hwo, wh, sizeof wh); } Resource.h #define IDD_MAINDLG100 #define IDC_STATIC-1 #define IDC_PLAY1000 #define IDC_STOP1001 waveloop.rc // resource script #include windows.h #include "resource.h" IDD_MAINDLG DIALOGEX 100, 100, 320, 200 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW CAPTION "waveloop" FONT 9, "MS UI Gothic" BEGIN PUSHBUTTON"Play( P)",IDC_PLAY, 10, 10, 50, 15 PUSHBUTTON"Stop( S)",IDC_STOP, 70, 10, 50, 15 END
https://w.atwiki.jp/sampleisbest/pages/61.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 コンソール アプリケーション プロジェクト名 lzwenc アプリケーションの種類 コンソール アプリケーション 追加のオプション 空のプロジェクト LZWの勉強用で制限事項、改良の余地多々あり。 参考 GIFフォーマットの詳細 http //www.tohoho-web.com/wwwgif.htm 時雨エノキオプト-アセンブリホール2nd-自作ソフト-GIFデコーダ http //www.geocities.jp/warotarock/asen2ndgif001.html 辞書テーブルを利用しない新LZW法 http //homepage1.nifty.com/uchi/lzw.htm GIF89a Specification http //www.w3.org/Graphics/GIF/spec-gif89a.txt LZW and GIF explained http //www.martinreddy.net/gfx/2d/GIF-comp.txt lzwenc.c #include stdio.h // printf #include stdlib.h // _countof #include string.h // memcmp // 型定義 typedef unsigned charUCHAR; typedef unsigned shortUSHORT; typedef struct { USHORTusCode; UCHARucCodeSize; } SCode; // グローバル変数 static UCHARg_aucCharStream[] = {// 文字データ(コード化対象) //1, 255, 1, 255, 1, 255, 1, 255, 0, 0, 0, 0, 0, 0, 0, 0, }; static intg_aiStringTable[0x1000];// 辞書テーブル static intg_iStringIndex;// 辞書の指標 static intg_iStringStart;// 辞書の先頭 static SCodeg_aCodeStream[1024];// コード化されたデータ static intg_iCodeIndex = 0;// コード化されたデータの指標 // 関数プロトタイプ宣言 int ClearStringTable(int iCurrentIndex); int SearchStringTable(int iCurrentIndex, int iCharIndex); int AddStringTable(int iCharIndex); int AddCodeStream(int iCode, int iCodeSize); int PrintCodeStream(void); int PrintCodeBitStream(void); int PrintBitStream(int iCode, int iCodeSize); void PrintByte(UCHAR ucByte); int main() { intiCharIndex;// 文字の指標 intiCurrentIndex;// 現在の文字列の指標 intiCurrentCode;// 現在の文字列のコード intiStringCode;// 辞書のコード intiLZWMinimumCodeSize = 8;// 最小コードビット数 intiClearCode;// クリアコード intiCodeSize;// コードのビット数 intiCodeNext;// コードのビット数拡大値 // クリアコードの設定など iClearCode = 1 iLZWMinimumCodeSize; if (iLZWMinimumCodeSize 2) { iLZWMinimumCodeSize = 2; } g_iStringStart = iClearCode + 2; // 現在の文字列に最初の文字をセットする iCurrentIndex = 0; iCurrentCode = g_aucCharStream[iCurrentIndex]; // 辞書テーブルのクリア ClearStringTable(iCurrentIndex); iCodeSize = iLZWMinimumCodeSize + 1; AddCodeStream(iClearCode, iCodeSize);// Clear code iCodeNext = 1 iCodeSize; for (iCharIndex = 1; iCharIndex _countof(g_aucCharStream); iCharIndex++) { // 文字の指標を1つ進め、現在の文字列から辞書のコードを検索する iStringCode = SearchStringTable(iCurrentIndex, iCharIndex); if (0 = iStringCode) { // 辞書にあれば、現在の文字列のコードに辞書のコードを保存する iCurrentCode = iStringCode; } else { // 辞書になければ、現在の文字列を辞書に追加 AddStringTable(iCharIndex); // 現在の文字列のコードを出力 AddCodeStream(iCurrentCode, iCodeSize); // 現在の文字列を更新する iCurrentIndex = iCharIndex; iCurrentCode = g_aucCharStream[iCurrentIndex]; // コードのビット数拡大チェック if (iCodeNext = g_iStringIndex) { iCodeSize++; if (12 iCodeSize) { // 辞書テーブルのクリア ClearStringTable(iCurrentIndex); iCodeSize = iLZWMinimumCodeSize + 1; AddCodeStream(iClearCode, iCodeSize); } iCodeNext = 1 iCodeSize; } } } // 現在の文字列のコードを出力 AddCodeStream(iCurrentCode, iCodeSize); AddCodeStream(iClearCode + 1, iCodeSize);// End of Information code PrintCodeStream(); PrintCodeBitStream(); return 0; } // 辞書テーブルのクリア int ClearStringTable(int iCurrentIndex) { g_iStringIndex = g_iStringStart; g_aiStringTable[g_iStringStart - 1] = iCurrentIndex; return 0; } // 辞書テーブルの検索 // 戻り値:-1=辞書にない 0以上=辞書のコード int SearchStringTable(int iCurrentIndex, int iCharIndex) { UCHAR*pucCurrent;// 現在の文字列のポインタ intiCurrentLen;// 現在の文字列の長さ intiPrevIndex;// 前の指標 intiNowIndex;// 今の指標 intiStringLen;// 辞書の文字列の長さ inti; // 指標が同じなら、そこにある文字を辞書のコードとする if (iCurrentIndex == iCharIndex) { return g_aucCharStream[iCurrentIndex]; } iCurrentLen = iCharIndex - iCurrentIndex + 1; pucCurrent = g_aucCharStream + iCurrentIndex; iPrevIndex = g_aiStringTable[g_iStringStart - 1]; for (i = g_iStringStart; i g_iStringIndex; i++) { iNowIndex = g_aiStringTable[i]; iStringLen = iNowIndex - iPrevIndex + 1; if (iStringLen == iCurrentLen memcmp(pucCurrent, g_aucCharStream + iPrevIndex, iCurrentLen) == 0) { return i; } iPrevIndex = iNowIndex; } return -1; } // 辞書テーブルの追加 int AddStringTable(int iCharIndex) { if (_countof(g_aiStringTable) = g_iStringIndex) { return -1; } g_aiStringTable[g_iStringIndex] = iCharIndex; g_iStringIndex++; return 0; } // コード化されたデータの追加 int AddCodeStream(int iCode, int iCodeSize) { if (_countof(g_aCodeStream) = g_iCodeIndex) { return -1; } g_aCodeStream[g_iCodeIndex].usCode = iCode; g_aCodeStream[g_iCodeIndex].ucCodeSize = iCodeSize; g_iCodeIndex++; return 0; } // コード化されたデータの出力 int PrintCodeStream(void) { inti; for (i = 0; i g_iCodeIndex; i++) { printf("%d %u %u\n", i, g_aCodeStream[i].usCode, g_aCodeStream[i].ucCodeSize); } return 0; } // コード化されたデータをビットストリーム出力する int PrintCodeBitStream(void) { inti; for (i = 0; i g_iCodeIndex; i++) { PrintBitStream(g_aCodeStream[i].usCode, g_aCodeStream[i].ucCodeSize); } PrintBitStream(-1, 0); return 0; } // ビットストリーム出力 int PrintBitStream(int iCode, int iCodeSize) { static UCHARucBits = 0; static intiBits = 0; if (iCode 0) { PrintByte(ucBits); return 0; } ucBits = (iCode iBits) | ucBits; iBits += iCodeSize; while (8 = iBits) { PrintByte(ucBits); iBits -= 8; ucBits = (iCode (iCodeSize - iBits)); } return 0; } // バイト出力 void PrintByte(UCHAR ucByte) { characBuf[16]; _itoa_s(0x100 | ucByte, acBuf, _countof(acBuf), 2); printf("0x%02X %.4s %.4s\n", ucByte, acBuf + 1, acBuf + 5); } 出力 0 256 9 1 0 9 2 258 9 3 259 9 4 258 9 5 257 9 0x00 0000 0000 0x01 0000 0001 0x08 0000 1000 0x1C 0001 1100 0x28 0010 1000 0x30 0011 0000 0x20 0010 0000
https://w.atwiki.jp/keroro00innovator/pages/3334.html
KISSから創造るBig Bang KISSから創造るBig Bang アーティスト ピタゴラス★オールスター 発売日 2017年4月5日 レーベル Rejet デイリー最高順位 4位(2017年4月6日) 週間最高順位 7位(2017年4月11日) 月間最高順位 28位(2017年4月) 年間最高順位 377位(2017年) 初動売上 2658 累計売上 3105 収録内容 曲名 タイアップ 視聴 1 KISSから創造るBig Bang MARGINAL♯4 ED ランキング 週 月日 順位 変動 週/月間枚数 累計枚数 1 4/11 7 新 2658 2658 2 4/18 ↓ 447 3105 2017年4月 28 新 3105 3105 MARGINAL♯4 ED 前作 次作 絆-KIZUNA-MARGINAL♯4 KISSから創造るBig Bang 関連CD WeMe!!!!